Many network protocols, such as TCP, operate by connecting from a client to a server to gain access to resources on that server. Typically this connection is established over a network such as a local area network (LAN) or a wide area network (WAN). One use of that client-server method is to allow a client device to gain access to an end device, such as a printer, reader, or sensor, via a server (referred to herein as a “remote device”) connected the network.
In a simple case, the client might connect directly to the Internet Protocol (IP) address of a remote device and the TCP port on that remote device associated with the end device. However, installing remote devices at locations with Internet access (e.g., a digital subscriber line (DSL) or cable router) so that those devices can communicate with other devices or systems over the Internet can be problematic.
The remote devices typically are installed on a private local network that is connected to the Internet through a firewall. Firewalls are a combination of software and/or hardware that are designed to block unauthorized access to the private local network and the devices connected to the local network. All messages passing into the local network from the Internet or out of the local network from to the Internet pass through the firewall. The firewall examines these messages and blocks those messages that do not meet a predetermined set of security criteria. Typical default firewall configurations allow all outgoing connections and block all incoming connections.
Opening a hole in a network firewall to allow incoming connections to remote devices on the network can be both impractical and undesirable, and requires modifications to the target network and/or the firewall. Making these modifications can be tedious and complex, and the owners of the network may not have sufficient technical knowledge needed to make these modifications.
Connecting to remote devices over the Internet can also be impractical, because the remote devices that are to be reached from the Internet must be assigned a static private IP address. Otherwise, if the remote device is assigned a dynamic IP address, the network address assigned to the remote device may change periodically, preventing connections to the remote device from the Internet unless the device attempting to connect to the remote device is provided the new IP address assigned to the remote device. Static private IP addresses are not typical for a home environment and many business environments, and would usually also require a static public Internet address for the site. Static IP addresses stay the same each time that a device powers up unlike dynamic IP addresses which may change each time the device is powered up.
In a typical home or business environment, IP addresses are typically dynamically allocated using the Dynamic Host Configuration Protocol (DHCP) or a similar technique for dynamically assigning IP addresses to devices on a network. In DHCP, an IP address is temporarily allocated to a device from a pool of IP addresses for a period of time, and after the period of time expires, the IP address is returned to the pool of IP addresses where the IP address may be temporarily allocated to another device. While use of static private IP addresses on the local network is somewhat more likely in a business environment, it is by no means common.